/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.clinicariobamba.ReglasNegocio.Funciones;

import com.clinicariobamba.Accesodatos.Conexion;
import com.clinicariobamba.ReglasNegocio.Clases.Composicion;
import com.clinicariobamba.ReglasNegocio.Clases.Dependencia;
import com.clinicariobamba.ReglasNegocio.Clases.HistoriaClinica;
import com.clinicariobamba.ReglasNegocio.Clases.Organizacion;
import com.clinicariobamba.ReglasNegocio.Clases.OrganizacionDependencia;
import com.clinicariobamba.ReglasNegocio.Clases.Paciente;
import com.clinicariobamba.ReglasNegocio.Clases.ProfesionalSalud;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author Gis
 */
public class FuncionesComposicion {

    public static boolean insertar(Composicion composicion) throws Exception {
        boolean resultado;
        resultado = false;
        Conexion con;
        try {
            String sql = String.format("select `clinica riobamba`.`insertar_composicion`('%s',%d,'%d','%s')", composicion.getProfesionalSalud().getCi(), composicion.getHistoriaClinica().getIdHc(), composicion.getOrganizacionDependencia().getIdOrgDep(), composicion.getFecha());
            con = new Conexion();

            ResultSet rs = con.ejecutarQuery(sql);
//            rs.next();
//            resultado = rs.getBoolean(1);
            while (rs.next()) {
                composicion.setIdComposicion(rs.getInt(1));
                resultado = true;
            }
            con.desconectar();
        } catch (Exception ex) {
            throw ex;
        }
        return resultado;
    }

    public static ArrayList<Composicion> obtenerXLCodigoHCE(int codigoHCE) throws Exception {
        try {
            Conexion con = new Conexion();
            ArrayList<Composicion> list = new ArrayList();
            try {
                String sql = "select c.id_composicion, p.ci,p.nombres,p.apellidos,p.especializacion,p.telefono,p.contrasena,"
                        + "h.id_hc,h.id_paciente,o.id_org_dep,o.id_dependencia,o.id_organizacion,c.fecha\n"
                        + "from composicion as c \n"
                        + "inner join profesional_salud as p on c.id_ps=p.ci \n"
                        + "inner join historia_clinica as h on c.id_hc=h.id_hc\n"
                        + "inner join organizacion_dependencia as o on c.id_dep=o.id_org_dep \n"
                        + "where h.id_hc = " + codigoHCE;
                ResultSet rs = con.ejecutarQuery(sql);
                while (rs.next()) {
                    list.add(new Composicion(rs.getInt(1), new ProfesionalSalud(rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7)), new HistoriaClinica(rs.getInt(8), new Paciente(rs.getInt(9))), new OrganizacionDependencia(rs.getInt(10), new Dependencia(rs.getInt(11)), new Organizacion(rs.getInt(12))), rs.getTimestamp(13)));
                }
            } catch (Exception e) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error de consulta de datos de Etnia", e.getMessage());
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
            con.desconectar();
            return list;
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error en la conexion a la base de datos", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            return new ArrayList();
        }
    }

    public static ArrayList<Composicion> obtenerCodigoHCE(int codigoHCE) throws Exception {
        try {
            Conexion con = new Conexion();
            ArrayList<Composicion> list = new ArrayList();
            try {
                String sql = "select c.id_composicion, p.ci,p.nombres,p.apellidos,p.especializacion,p.telefono,p.contrasena,h.id_hc,h.id_paciente,o.id_org_dep,o.id_dependencia, de.descripcion,o.id_organizacion,c.fecha\n"
                        + "from composicion as c \n"
                        + "inner join profesional_salud as p on c.id_ps=p.ci \n"
                        + "inner join historia_clinica as h on c.id_hc=h.id_hc\n"
                        + "inner join organizacion_dependencia as o on c.id_dep=o.id_org_dep \n"
                        + "inner join dependencia as de on o.id_dependencia = de.id_dependencia where h.id_hc = " + codigoHCE+" order by c.fecha DESC";
                ResultSet rs = con.ejecutarQuery(sql);
                while (rs.next()) {
                    list.add(new Composicion(rs.getInt(1), new ProfesionalSalud(rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7)), new HistoriaClinica(rs.getInt(8), new Paciente(rs.getInt(9))), new OrganizacionDependencia(rs.getInt(10), new Dependencia(rs.getInt(11), rs.getString(12)), new Organizacion(rs.getInt(13))), rs.getTimestamp(14)));
                }
            } catch (Exception e) {
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        "Error de consulta de datos de Etnia", e.getMessage());
                FacesContext.getCurrentInstance().addMessage(null, message);
            }
            con.desconectar();
            return list;
        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error en la conexion a la base de datos", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            return new ArrayList();
        }
    }

//    public static Paciente obtenerComposicionID(int idPF, int idHCE, Timestamp fecha) {
//        try {
//            Conexion con = new Conexion();
//            Paciente paciente = new Paciente();
//            try {
//                String sql = String.format("select * from paciente where `ci` = %s ", cedula);
//                ResultSet rs = con.ejecutarQuery(sql);
//                while (rs.next()) {
//                    paciente = new Paciente(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), new EstadoCivil(rs.getString(7)), new Etnia(rs.getString(8)), rs.getString(9), rs.getString(10), rs.getString(11), rs.getString(12), rs.getString(13), rs.getString(14), rs.getString(15), rs.getString(16), rs.getByte(17));
//                }
//            } catch (Exception e) {
//                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
//                        "Error de consulta de datos de la Dependencia", e.getMessage());
//                FacesContext.getCurrentInstance().addMessage(null, message);
//            }
//            con.desconectar();
//            return paciente;
//        } catch (Exception ex) {
//            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
//                    "Error en la conexion a la base de datos", ex.getMessage());
//            FacesContext.getCurrentInstance().addMessage(null, message);
//            return new Paciente();
//        }
//    }
}
